home *** CD-ROM | disk | FTP | other *** search
/ Ian & Stuart's Australian Mac 1993 September / September 93.iso / Archives / Applications / Text / Text Editors / Alpha 5.31 Folder / Tcl / SystemCode / shell.tcl < prev    next >
Encoding:
Text File  |  1993-02-02  |  2.9 KB  |  136 lines  |  [TEXT/ALFA]

  1.  
  2. ################################################################################
  3. # Shell routines.
  4. ################################################################################
  5.  
  6.  
  7. proc setShellMode {} {
  8.     setTclMode
  9.     changeMode "Csh"
  10. }
  11.  
  12. proc initShell {} {
  13.     insertText "Welcome to Alpha's Tcl shell."
  14.     shellPrompt [lindex [winNames] 0]
  15. }
  16.  
  17. # Output the prompt. We want the window name because some of the commands
  18. # we evaluate (such as 'edit') open a new window, and we want the insertion
  19. # to be done in the shell window.
  20. proc shellPrompt {winName} {
  21.     regexp "(\[^:\]*):$" [pwd] crDum crDir
  22.     insertText -w $winName "\r" $crDir "> "
  23. }
  24.  
  25.  
  26. # Called at all carriage returns.
  27. proc carriageReturn {} {
  28.     global mode
  29.     global indentOnCR
  30.     set indentString ""
  31.     deleteText [getPos] [selEnd]
  32.     if {$indentOnCR} {
  33.         set pos [getPos]
  34.         set text [getText [lineStart $pos] $pos]
  35.         for {set i 0; set len [string length $text]} {$i <= $len} {incr i} {
  36.             set c [string index $text $i]
  37.             if {($c != "\t") && ($c != "\ ")} {
  38.                 set indentString [string range $text 0 [expr $i-1]]
  39.                 break
  40.             }
  41.         }
  42.     }
  43.     insertText "\r" $indentString
  44. }
  45.  
  46.  
  47. proc tclCarriageReturn {} {
  48.     global mode
  49.     global _text
  50.     global _returnText
  51.     set pos [getPos]
  52.     set ind [string first ">" [getText [lineStart $pos] $pos]]
  53.     if {$ind < 0} {
  54.         carriageReturn
  55.         return
  56.     }
  57.     set lStart [expr [lineStart $pos]+$ind+2]
  58.     endOfLine
  59.     set _text [getText $lStart [getPos]]
  60.     set fileName [lindex [winNames] 0]
  61.     if {[getPos] != [maxPos]} {
  62.         goto [maxPos]
  63.         insertText -w $fileName $_text
  64.     }
  65.     if {[string first "mpw" $fileName] != -1} {
  66.         set _returnText [dosc -n ToolServer -s $_text]
  67.         insertText "\r" $_returnText
  68.         mpwPrompt
  69.     } else {
  70.         uplevel #0 {catch $_text _returnText}
  71.         if {[string length $_returnText]} {
  72.             insertText -w $fileName "\r" $_returnText
  73.         } 
  74.         shellPrompt $fileName
  75.     }
  76.     unset _text
  77.     unset _returnText
  78. }
  79. bind '\r' carriageReturn
  80. bind '\r' tclCarriageReturn "Csh"
  81. bind '\r' tclCarriageReturn "MPW"
  82.  
  83. proc startMPW {} {
  84.     insertText "Welcome to Alpha's MPW shell (using ToolServer via AppleEvents)."
  85.     launch "External1:TS/SS files:ToolServer"
  86.     bind '\r' tclCarriageReturn "MPW"
  87.     carriageReturn
  88.     mpwPrompt
  89. }
  90. proc mpwPrompt {} {
  91.     insertText "mpw> "
  92. }
  93.  
  94. proc setMPWMode {} {
  95.     changeMode "MPW"
  96. }
  97.  
  98. #    tclCarriageReturn
  99.  
  100.  
  101.  
  102. #=============================================================================
  103. #    Shell Aliases
  104. #=============================================================================
  105. proc l {args} {
  106.     eval [concat "ls -F" $args]}
  107.  
  108. proc ll {args} {
  109.     eval [concat "ls -l" $args]}
  110.  
  111.  
  112. proc grep {pat args} {
  113.     insertText "\r"
  114.     set pat *$pat*
  115.     set args [glob -nocomplain $args]
  116.     foreach file $args {
  117.         set id [open $file]
  118.         while {[gets $id string] != "-1"} {
  119.             if {[string match $pat $string] == 1} {
  120.                 insertText $file: $string "\r"
  121.             }
  122.         }
  123.         close $id
  124.     }
  125. }
  126.  
  127.  
  128. proc ts script {
  129.     return [dosc -n ToolServer -s $script]
  130. }
  131.  
  132. proc tl {} {
  133.     launch "External:Babel:Tools:ToolServer"
  134. }
  135.  
  136.